luci-lua-runtime: Update sys.net.conntrack() to use to conntrack tool
authorjpfox156 <[email protected]>
Fri, 25 Feb 2022 13:27:36 +0000 (23:27 +1000)
committerPaul Donald <[email protected]>
Thu, 2 Oct 2025 13:43:16 +0000 (15:43 +0200)
Fall through to /usr/sbin/conntrack tool if /proc/net/nf_conntrack is
not available.

/proc/net/nf_conntrack has been obsoleted in recent kernels
(https://cateee.net/lkddb/web-lkddb/NF_CONNTRACK_PROCFS.html). This
change enables sys.net.conntrack() to return conntrack information via
the /usr/sbin/conntrack tool (if installed) instead.

Enables population of the /luci/admin/status/realtime/connections list.

Signed-off-by: James Fox <[email protected]>
[ format using tabs ]
Signed-off-by: Paul Donald <[email protected]>
modules/luci-lua-runtime/luasrc/sys.lua

index e6eb762e48b18db4ff4e23ee0a6edf53a611e7f7..2b6048e560c71934087435b8bd450ace6b5715ef 100644 (file)
@@ -279,10 +279,14 @@ function net.host_hints(callback)
 end
 
 function net.conntrack(callback)
-       local ok, nfct = pcall(io.lines, "/proc/net/nf_conntrack")
-       if not ok or not nfct then
+       local ok, fd = pcall(io.open, "/proc/net/nf_conntrack")
+       if not ok or not fd then
+               ok, fd = pcall(io.popen, "/usr/sbin/conntrack -L -o extended", "r")
+       end
+       if not ok or not fd then
                return nil
        end
+       nfct = fd:lines()
 
        local line, connt = nil, (not callback) and { }
        for line in nfct do